package sd_models

import (
	"reflect"
)

// 派车信息表
type Produce struct {
	ID        string  `gorm:"primarykey;column:ID" json:"ID"`
	Code      string  `gorm:"column:Code" json:"Code"`           //任务单编号
	DatTim    float64 `gorm:"column:DatTim" json:"DatTim"`       //创建日期
	Attribute string  `gorm:"column:Attribute" json:"Attribute"` //任务性质
	Contract  string  `gorm:"column:Contract" json:"Contract"`   //合同信息
	Customer  string  `gorm:"column:Customer" json:"Customer"`   //客户名称
	ProjName  string  `gorm:"column:ProjName" json:"ProjName"`   //工程名称
	ProjType  string  `gorm:"column:ProjType" json:"ProjType"`   //工程类别
	ProjGrade string  `gorm:"column:ProjGrade" json:"ProjGrade"` //工程级别
	ProjArea  float64 `gorm:"column:ProjArea" json:"ProjArea"`   //开工面积
	ProjAdr   string  `gorm:"column:ProjAdr" json:"ProjAdr"`     //施工地址
	Distance  float64 `gorm:"column:Distance" json:"Distance"`   //运输距离
	ConsPos   string  `gorm:"column:ConsPos" json:"ConsPos"`     //施工部位
	Pour      string  `gorm:"column:Pour" json:"Pour"`           //浇注方式
	Variety   string  `gorm:"column:Variety" json:"Variety"`     //产品种类
	BetLev    string  `gorm:"column:BetLev" json:"BetLev"`       //强度等级
	Filter    string  `gorm:"column:Filter" json:"Filter"`       //抗渗等级
	Freeze    string  `gorm:"column:Freeze" json:"Freeze"`       //抗冻等级
	Lands     string  `gorm:"column:Lands" json:"Lands"`         //坍落度
	Cement    string  `gorm:"column:Cement" json:"Cement"`       //水泥品种
	Stone     string  `gorm:"column:Stone" json:"Stone"`         //石子种类
	BnSize    string  `gorm:"column:BnSize" json:"BnSize"`       //骨料粒径
	AddLiq    string  `gorm:"column:AddLiq" json:"AddLiq"`       //外加剂要求
	Request   string  `gorm:"column:Request" json:"Request"`     //技术要求
	Recipe    string  `gorm:"column:Recipe" json:"Recipe"`       //配合比编号
	MixLast   float64 `gorm:"column:MixLast" json:"MixLast"`     //搅拌时间
	MorRec    string  `gorm:"column:MorRec" json:"MorRec"`       //砂浆配合比编号
	Mete      float64 `gorm:"column:Mete" json:"Mete"`           //任务方量
	BegTim    float64 `gorm:"column:BegTim" json:"BegTim"`       //浇注日期
	EndTim    float64 `gorm:"column:EndTim" json:"EndTim"`       //截止日期
	Attamper  string  `gorm:"column:Attamper" json:"Attamper"`   //调度员
	Data      float64 `gorm:"column:Data" json:"Data"`           //附加数据
	Flag      string  `gorm:"column:Flag" json:"Flag"`           //标识
	Notes     string  `gorm:"column:Notes" json:"Notes"`         //备注
	Vehicle   string  `gorm:"column:Vehicle" json:"Vehicle"`     //车辆ID
	Driver    string  `gorm:"column:Driver" json:"Driver"`       //驾驶员
	ProdTimB  float64 `gorm:"column:ProdTimB" json:"ProdTimB"`   //开始生产时刻
	ProdTimE  float64 `gorm:"column:ProdTimE" json:"ProdTimE"`   //结束生产时刻
	ProdMete  float64 `gorm:"column:ProdMete" json:"ProdMete"`   //生产方量
	MorMete   float64 `gorm:"column:MorMete" json:"MorMete"`     //砂浆方量
	ProdErr   float64 `gorm:"column:ProdErr" json:"ProdErr"`     //车误差
	ProdCnt   float64 `gorm:"column:ProdCnt" json:"ProdCnt"`     //生产盘数
	MorCnt    float64 `gorm:"column:MorCnt" json:"MorCnt"`       //砂浆盘数
	TotVehs   int64   `gorm:"column:TotVehs" json:"TotVehs"`     //累计车次
	TotMete   float64 `gorm:"column:TotMete" json:"TotMete"`     //累计方量
	Qualitor  string  `gorm:"column:Qualitor" json:"Qualitor"`   //质检员
	Operator  string  `gorm:"column:Operator" json:"Operator"`   //操作员
	LeftTim   float64 `gorm:"column:LeftTim" json:"LeftTim"`     //出站时间
	ArriveTim float64 `gorm:"column:ArriveTim" json:"ArriveTim"` //到达时间
	ChkLands  string  `gorm:"column:ChkLands" json:"ChkLands"`   //检测坍落度
	ChkTemp   string  `gorm:"column:ChkTemp" json:"ChkTemp"`     //卸砼温度
	UnloadTim float64 `gorm:"column:UnloadTim" json:"UnloadTim"` //卸料时间
	OverTim   float64 `gorm:"column:OverTim" json:"OverTim"`     //卸完时间
	Acceptor  string  `gorm:"column:Acceptor" json:"Acceptor"`   //现场验收
	Mark      string  `gorm:"column:Mark" json:"Mark"`           //总第n车
	MISID     string  `gorm:"column:MISID" json:"MISID"`         //
	Stamp     float64 `gorm:"column:Stamp" json:"Stamp"`         //
	Task      string  `gorm:"column:Task" json:"Task"`           //任务单ID
	Contacts  string  `gorm:"column:Contacts" json:"Contacts"`   //
	ContTel   string  `gorm:"column:ContTel" json:"ContTel"`     //
	Bend      string  `gorm:"column:Bend" json:"Bend"`           //
	// Linker    sql.NullString `gorm:"column:Linker" json:"Linker"`       //
	// LinkTel   sql.NullString `gorm:"column:LinkTel" json:"LinkTel"`     //
	// Tag       string         `gorm:"column:Tag" json:"Tag"`             //
}

// GenerateColumnNames 生成 Task 结构体的所有字段名称切片
func (p Produce) GenerateColumnNames() []string {
	var colNames []string

	// 获取 Task 类型
	taskType := reflect.TypeOf(p)

	// 遍历结构体字段
	for i := 0; i < taskType.NumField(); i++ {
		fieldInfo := taskType.Field(i)
		colNames = append(colNames, fieldInfo.Name)
	}

	return colNames
}

func (Produce) TableName() string {
	return "Produce"
}
